unit produto;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Buttons,
  Vcl.Grids, Vcl.DBGrids, Data.DB, Data.Win.ADODB, Vcl.DBCtrls, Vcl.DBLookup,
  Vcl.Imaging.pngimage;

type
  Tfrmproduto = class(TForm)
    Label1: TLabel;
    Image1: TImage;
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    SpeedButton4: TSpeedButton;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    RadioGroup1: TRadioGroup;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton5: TSpeedButton;
    Panel1: TPanel;
    GroupBox3: TGroupBox;
    Edit2: TEdit;
    Button1: TButton;
    RadioGroup2: TRadioGroup;
    GroupBox4: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    Edit3: TEdit;
    Edit4: TEdit;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    Panel2: TPanel;
    SpeedButton8: TSpeedButton;
    comando: TADOQuery;
    DataSource1: TDataSource;
    DBGrid4: TDBGrid;
    comandoid: TIntegerField;
    comandoPedido: TStringField;
    comandoCodigoproduto: TStringField;
    comandoNomeproduto: TStringField;
    comandoQuantidade: TIntegerField;
    comandoValor: TFloatField;
    comandocpf: TStringField;
    comandoMarca: TStringField;
    comandoModelo: TStringField;
    comandoCor: TStringField;
    comandodatavenda: TStringField;
    comandototal: TFloatField;
    comandonome: TStringField;
    Edit5: TEdit;
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure RadioGroup2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Edit1Change(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DBLookupComboBox1CloseUp(Sender: TObject);
    procedure DBLookupComboBox2Click(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmproduto: Tfrmproduto;
  porcentagem: real;
  x: integer;

implementation

{$R *.dfm}

uses produto1, DM, suporte;

procedure Tfrmproduto.Button1Click(Sender: TObject);
begin
if edit2.text <> ''  then
begin


if radiogroup2.ItemIndex = 0 then
begin

base.Comando2.Close;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('declare @porcento real set @porcento = '+quotedstr(edit2.Text)  );
base.Comando2.SQL.Add('update produto set venda = ((venda*@porcento)/100)+venda'        );
base.comando2.ExecSQL;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('update produto set reajuste = '+(edit2.text)  );
base.comando2.ExecSQL;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('update produto set datareajuste = '+quotedstr(datetostr(date)) );
base.comando2.ExecSQL;
panel1.Visible:= false;

end;




if radiogroup2.ItemIndex = 1  then
begin



if (edit4.Text <> '') and (edit3.Text = '' )then
begin
base.Comando2.Close;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('declare @porcento real set @porcento = '+quotedstr(edit2.Text));
base.Comando2.SQL.Add('update produto set venda = ((venda*@porcento)/100)+venda where categoria = '+quotedstr(edit4.text)          );
base.comando2.ExecSQL;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('update produto set reajuste = '+(edit2.text)+ 'where categoria = '+quotedstr(edit4.text)          );
base.comando2.ExecSQL;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('update produto set datareajuste = '+quotedstr(datetostr(date))+ 'where categoria = '+quotedstr(edit4.text)          );
base.comando2.ExecSQL;
base.Comando2.Close;
panel1.Visible:= false;
end;  //categoria

if (edit4.Text = '') and (edit3.Text <> '' )then
begin
base.Comando2.Close;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('declare @porcento real set @porcento = '+quotedstr(edit2.Text));
base.Comando2.SQL.Add('update produto set venda = ((venda*@porcento)/100)+venda where marca = '+quotedstr(edit3.text)          );
base.comando2.ExecSQL;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('update produto set reajuste = '+(edit2.text)+ 'where marca = '+quotedstr(edit3.text)          );
base.comando2.ExecSQL;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('update produto set datareajuste = '+quotedstr(datetostr(date))+ 'where marca = '+quotedstr(edit3.text)          );
base.comando2.ExecSQL;

base.Comando2.Close;
panel1.Visible:= false;
end;  //marca

if (edit3.Text <> '') and (edit4.Text <> '' )then
begin
base.Comando2.Close;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('declare @porcento real set @porcento = '+quotedstr(edit2.Text));
base.Comando2.SQL.Add('update produto set venda = ((venda*@porcento)/100)+venda where categoria = '+quotedstr(edit4.text) +' and marca = '+quotedstr(edit3.text)         );
base.comando2.ExecSQL;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('update produto set reajuste = '+(edit2.text)+ 'where ((marca = '+quotedstr(edit3.text)+') and (categoria = '+quotedstr(edit4.text)+'))'          );
base.comando2.ExecSQL;
base.comando2.sql.Clear;
base.Comando2.SQL.Add('update produto set datareajuste = '+quotedstr(datetostr(date)) +'where ((marca = '+quotedstr(edit3.text)+') and (categoria = '+quotedstr(edit4.text)+'))'          );
base.comando2.ExecSQL;
base.Comando2.Close;
panel1.Visible:= false;
end;  //marca


end;//individual




end;


base.Comando2.Close;
base.Comando2.SQL.Clear;
base.Comando2.SQL.Add('select * from produto where ativo = '+quotedstr('Ativo') ) ;
base.Comando2.SQL.Add(' order by descricao');
base.Comando2.Open;

edit2.Clear;
edit3.Clear;
edit4.Clear;
DBLookupComboBox1.KeyValue := NULL;
DBLookupComboBox2.KeyValue := NULL;


radiogroup1.Visible:= true;
speedbutton1.Visible:= true;
speedbutton2.Visible:= true;
speedbutton3.Visible:= true;
speedbutton4.Visible:= true;
speedbutton5.Visible:= true;
speedbutton7.Visible:= true;


end;

procedure Tfrmproduto.DBGrid1CellClick(Column: TColumn);
begin
edit5.Text:= base.Comando2.FieldByName('codigo').AsString;
end;

procedure Tfrmproduto.DBGrid1DblClick(Sender: TObject);
begin
base.produtos.Open;
base.produtos.Locate('codigo',base.comando2.FieldByName('codigo').AsString  ,[lopartialkey,locaseinsensitive]);
base.Comando2.Close;
frmproduto1.Show;
frmproduto1.TabSheet1.Enabled:= false;
end;

procedure Tfrmproduto.DBGrid1TitleClick(Column: TColumn);
begin
base.Comando2.Close;
base.Comando2.SQL.Clear;
base.Comando2.SQL.Add('select * from produto where ativo = '+quotedstr(radiogroup1.Items.Strings[0]) ) ;
base.Comando2.SQL.Add('order by '+column.FieldName);
base.comando2.open;
end;

procedure Tfrmproduto.DBLookupComboBox1CloseUp(Sender: TObject);
begin
if dblookupcombobox1.KeyValue <> null then
edit3.Text:= dblookupcombobox1.KeyValue;
end;

procedure Tfrmproduto.DBLookupComboBox2Click(Sender: TObject);
begin
if dblookupcombobox2.KeyValue <> null then
edit4.Text:= dblookupcombobox2.KeyValue;
end;

procedure Tfrmproduto.Edit1Change(Sender: TObject);
begin
base.Comando2.Open;
base.Comando2.SQL.Clear;
base.Comando2.sql.Add('select * from produto where UPPER(descricao) like upper('+ quotedstr(edit1.Text+'%')+') and ativo = '+quotedstr(radiogroup1.Items.Strings[radiogroup1.ItemIndex])         );
base.Comando2.SQL.Add('order by descricao');
base.Comando2.Open;

if base.Comando2.RecordCount = 0  then
begin
base.Comando2.Open;
base.Comando2.SQL.Clear;
base.Comando2.sql.Add('select * from produto where UPPER(codigo) like upper('+ quotedstr(edit1.Text+'%')+') and ativo = '+quotedstr(radiogroup1.Items.Strings[radiogroup1.ItemIndex])         );
base.Comando2.SQL.Add('order by descricao');
base.Comando2.Open;

   if base.Comando2.RecordCount = 0  then
    begin
    base.Comando2.Open;
    base.Comando2.SQL.Clear;
    base.Comando2.sql.Add('select * from produto where UPPER(marca) like upper('+ quotedstr(edit1.Text+'%')+') and ativo = '+quotedstr(radiogroup1.Items.Strings[radiogroup1.ItemIndex])         );
    base.Comando2.SQL.Add('order by descricao');
    base.Comando2.Open;
    end;




end;

end;

procedure Tfrmproduto.FormActivate(Sender: TObject);
begin
base.Comando2.Close;
base.Comando2.SQL.Clear;
base.Comando2.SQL.Add('select * from produto where ativo = '+quotedstr(radiogroup1.Items.Strings[radiogroup1.ItemIndex]) ) ;
base.Comando2.SQL.Add('order by descricao');
base.Comando2.Open;

base.Comando2.Locate('codigo',edit5.Text,[lopartialkey,locaseinsensitive]);


end;

procedure Tfrmproduto.FormClose(Sender: TObject; var Action: TCloseAction);
begin
base.Comando2.Close;
base.produtos.Close;
base.Categoria.Close;
edit1.Clear;
end;

procedure Tfrmproduto.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (key = 83) then
begin
frmsuporte.Button1.Click;
frmsuporte.Show;
end;
end;

procedure Tfrmproduto.FormShow(Sender: TObject);
begin
panel1.Left:= 25;
panel1.Top:= 102;
panel2.Left:= 25;
panel2.Top:= 102;

panel1.Visible:= false;
radiogroup1.Visible:= true;
speedbutton1.Visible:= true;
speedbutton2.Visible:= true;
speedbutton3.Visible:= true;
speedbutton4.Visible:= true;
speedbutton5.Visible:= true;

base.Comando2.Close;
base.Comando2.SQL.Clear;
base.Comando2.SQL.Add('select * from produto where ativo = '+quotedstr('Ativo') ) ;
base.Comando2.SQL.Add(' order by descricao');

try
base.comando2.Open;
base.Categoria.Open;
except

end;
end;

procedure Tfrmproduto.RadioGroup1Click(Sender: TObject);
begin
if radiogroup1.ItemIndex = 0 then
begin
base.Comando2.Close;
base.Comando2.SQL.Clear;
base.Comando2.SQL.Add('select * from produto where ativo = '+quotedstr(radiogroup1.Items.Strings[0]) ) ;
base.Comando2.SQL.Add('order by descricao');
base.comando2.Open;
end
else
begin
base.Comando2.Close;
base.Comando2.SQL.Clear;
base.Comando2.SQL.Add('select * from produto where ativo = '+quotedstr(radiogroup1.Items.Strings[1]) ) ;
base.Comando2.SQL.Add('order by descricao');
base.comando2.Open;
end;
end;

procedure Tfrmproduto.RadioGroup2Click(Sender: TObject);
begin
if radiogroup2.ItemIndex = 1  then
begin
groupbox4.Visible:= true;
end
else
begin
groupbox4.Visible:= false;
end;


end;

procedure Tfrmproduto.SpeedButton1Click(Sender: TObject);
var xx:integer;
begin
panel1.Visible:= false;
edit2.Clear;
edit3.Clear;
edit4.Clear;
DBLookupComboBox1.KeyValue := NULL;
DBLookupComboBox2.KeyValue := NULL;
frmproduto1.TabSheet1.Enabled:= true;
base.produtos.Open;

if base.produtos.RecordCount <1 then
begin
xx:= 1;
end
else
begin
xx:= base.produtos.RecordCount+1;
end;

base.produtos.Append;
base.produtos.FieldByName('Id').Value:= xx;
base.produtos.FieldByName('Codigo').Value:= formatfloat('00000', xx);
frmproduto1.show;
frmproduto1.DBEdit1.SetFocus;
end;

procedure Tfrmproduto.SpeedButton2Click(Sender: TObject);
begin
panel1.Visible:= false;
edit2.Clear;
edit3.Clear;
edit4.Clear;
DBLookupComboBox1.KeyValue := NULL;
DBLookupComboBox2.KeyValue := NULL;
base.produtos.Open;
base.produtos.Locate('codigo',base.comando2.FieldByName('codigo').AsString  ,[lopartialkey,locaseinsensitive]);
base.produtos.Edit;
base.Comando2.Close;
frmproduto1.TabSheet1.Enabled:= true;
frmproduto1.Show;
frmproduto1.DBEdit1.SetFocus;
frmproduto1.DBEdit1.SelectAll;
end;

procedure Tfrmproduto.SpeedButton3Click(Sender: TObject);
begin
panel1.Visible:= false;
edit2.Clear;
edit3.Clear;
edit4.Clear;
DBLookupComboBox1.KeyValue := NULL;
DBLookupComboBox2.KeyValue := NULL;
if Application.MessageBox('Deseja Excluir o Produto? ','Produtos',mb_YesNo+mb_iconquestion+mb_defbutton2) = idyes then
begin
base.comando2.Delete;
end;

end;

procedure Tfrmproduto.SpeedButton4Click(Sender: TObject);
begin
panel1.Visible:= false;
edit2.Clear;
edit3.Clear;
edit4.Clear;
DBLookupComboBox1.KeyValue := NULL;
DBLookupComboBox2.KeyValue := NULL;
close
end;

procedure Tfrmproduto.SpeedButton5Click(Sender: TObject);
begin
PANEL1.Visible:= TRUE;
edit2.Clear;
edit3.Clear;
edit4.Clear;
DBLookupComboBox1.KeyValue := NULL;
DBLookupComboBox2.KeyValue := NULL;
base.Categoria.Open;

radiogroup1.Visible:= false;
speedbutton1.Visible:= false;
speedbutton2.Visible:= false;
speedbutton3.Visible:= false;
speedbutton7.Visible:= false;
speedbutton5.Visible:= false;

radiogroup2.ItemIndex:= 0;


end;

procedure Tfrmproduto.SpeedButton6Click(Sender: TObject);
begin

base.Comando2.Close;
base.Comando2.SQL.Clear;
base.Comando2.SQL.Add('select * from produto where ativo = '+quotedstr('Ativo') ) ;
base.Comando2.SQL.Add(' order by descricao');
base.Comando2.Open;


panel1.Visible:= false;
radiogroup1.Visible:= true;
speedbutton1.Visible:= true;
speedbutton2.Visible:= true;
speedbutton3.Visible:= true;
speedbutton4.Visible:= true;
speedbutton5.Visible:= true;
speedbutton7.Visible:= true;

end;

procedure Tfrmproduto.SpeedButton7Click(Sender: TObject);
begin
panel2.Visible:= true;
comando.close;
comando.SQL.Clear;
comando.SQL.Add('select * from detalhevenda where codigoproduto = '+quotedstr(base.comando2.FieldByName('codigo').AsString));
comando.Open;
radiogroup1.Visible:= false;
speedbutton1.Visible:= false;
speedbutton2.Visible:= false;
speedbutton3.Visible:= false;

speedbutton5.Visible:= false;
speedbutton7.Visible:= false;

end;

procedure Tfrmproduto.SpeedButton8Click(Sender: TObject);
begin
panel2.Visible:= false;
comando.Close;

radiogroup1.Visible:= true;
speedbutton1.Visible:= true;
speedbutton2.Visible:= true;
speedbutton3.Visible:= true;
speedbutton4.Visible:= true;
speedbutton5.Visible:= true;
speedbutton7.Visible:= true;

end;

end.
